home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 21
/
Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso
/
Aminet
/
mus
/
midi
/
MusicXRexxMacs.lha
/
macros
/
ECHO.mxe
< prev
next >
Wrap
Text File
|
1997-02-11
|
3KB
|
161 lines
/* ECHO */
/* © Dick Doyle */
options results
MXCOLUMN 1
MXSLIDER 'Delay Amount ,0,768,0'
MXLABEL ''
MXLABEL 'NOTE VALUES'
MXLABEL '192 = ¼ note'
MXLABEL '384 = ½ note'
MXLABEL '576 = ¾ note'
MXLABEL '768 = 1 note'
MXCOLUMN 2
MXSLIDER "Nº of Repeats,1,99,1"
MXLABEL ''
MXLABEL 'ATTACK VELOCITY SLOPE'
MXLABEL ''
MXRADIO 'Falling,Ascending,Level'
MXREQUEST "ECHO,YES"
if result == 0 then exit
MXPOINTER "sleepy"
MXVALUE 8
times = result
MXVALUE 1
z = result
MXVALUE 12
i = result
if i = 0 then
SIGNAL FAL
if i = 1 then
SIGNAL ASC
if i = 2 then
SIGNAL LEV
FAL:
GETBARDATA
if BARDATA.SELECT == 'NONE' then do
MXREPORT "You must select some notes!"
exit
end
BEGINSCAN 'selected'
if result ~= 0 then do forever
NEXTEVENT
if result == 0 then break
V = (EVENT.ATTACK - 1)/times
if EVENT.TYPE == 'NOTE' then
do i = 1 to times
EVENT.START.CLOCKS = EVENT.START.CLOCKS + z
EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS + z
EVENT.ATTACK = (EVENT.ATTACK - V)
ADDEVENT
if EVENT.START.CLOCKS > BARDATA.MEASURE then do
EVENT.START.BARS = EVENT.START.BARS + 1
EVENT.START.CLOCKS = EVENT.START.CLOCKS - BARDATA.MEASURE
if EVENT.STOP.CLOCKS > BARDATA.MEASURE then do
EVENT.STOP.BARS = EVENT.STOP.BARS + 1
EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS - BARDATA.MEASURE
end
END
end
end
ENDSCAN
MXPOINTER "normal"
EXIT
ASC:
GETBARDATA
if BARDATA.SELECT == 'NONE' then do
MXREPORT "You must select some notes!"
exit
end
BEGINSCAN 'selected'
if result ~= 0 then do forever
NEXTEVENT
if result == 0 then break
Q = (127 - EVENT.ATTACK)/times
if EVENT.TYPE == 'NOTE' then
do i = 1 to times
EVENT.START.CLOCKS = EVENT.START.CLOCKS + z
EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS + z
EVENT.ATTACK = (EVENT.ATTACK + Q)
ADDEVENT
if EVENT.START.CLOCKS > BARDATA.MEASURE then do
EVENT.START.BARS = EVENT.START.BARS + 1
EVENT.START.CLOCKS = EVENT.START.CLOCKS - BARDATA.MEASURE
if EVENT.STOP.CLOCKS > BARDATA.MEASURE then do
EVENT.STOP.BARS = EVENT.STOP.BARS + 1
EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS - BARDATA.MEASURE
end
END
end
end
ENDSCAN
MXPOINTER "normal"
EXIT
LEV:
GETBARDATA
if BARDATA.SELECT == 'NONE' then do
MXREPORT "You must select some notes!"
exit
end
BEGINSCAN 'selected'
if result ~= 0 then do forever
NEXTEVENT
if result == 0 then break
if EVENT.TYPE == 'NOTE' then
do i = 1 to times
EVENT.START.CLOCKS = EVENT.START.CLOCKS + z
EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS + z
ADDEVENT
if EVENT.START.CLOCKS > BARDATA.MEASURE then do
EVENT.START.BARS = EVENT.START.BARS + 1
EVENT.START.CLOCKS = EVENT.START.CLOCKS - BARDATA.MEASURE
if EVENT.STOP.CLOCKS > BARDATA.MEASURE then do
EVENT.STOP.BARS = EVENT.STOP.BARS + 1
EVENT.STOP.CLOCKS = EVENT.STOP.CLOCKS - BARDATA.MEASURE
end
END
end
end
ENDSCAN
MXPOINTER "normal"
EXIT